package cn.iune.system.service;

import java.lang.reflect.Field;

public class EntityToDefColJSON {
	
//	public static void main(String[] args) {
//		//在此调用
//	    System.out.println("从JAVA类中取出列定义JSONObject（排除'rowState'特殊列）开始*******************************************************************");
//	    String defCol = doit(QualityRecord.class);
//	    System.out.println(defCol);
//	    System.out.println("从JAVA类中取出列定义JSONObject（排除'rowState'特殊列）结束*******************************************************************");
//	}
	
	//这个可不是测试用的，用于产生前端需要的defCol格式数据
	public static String doit(Class<?> c){
	    System.out.println("类名:"+c.getName());
		//初始化列集
//		Map<String, DataType> columns = new LinkedHashMap<String, DataType>();
	      
	    Field[] fields = c.getDeclaredFields();
	    
	    String defCol = "";
	    for(int i =0;i<fields.length;i++){
	    	if(i==0){
	    		defCol = defCol+"{";
	    	}
	    	
//	    	System.out.println(fields[i].getName());
	    	//排除rowState和serialVersionUID特殊列
	    	if("rowState".equals(fields[i].getName()) || "serialVersionUID".equals(fields[i].getName())){
	    		continue;
	    	}
	    	
	    	String columnType = fields[i].getType().toString().substring(fields[i].getType().toString().lastIndexOf(".")+1);
	    	//单独处理int/BigDecimal/Timestamp类型
	    	if(columnType.equals("int")){
	    		columnType = "Integer";
	    	}
	    	if(columnType.equals("BigDecimal")){
	    		columnType = "Decimal";
	    	}
	    	if(columnType.equals("Timestamp")){
	    		columnType = "Datetime";
	    	}

//	    	System.out.println(fields[i].getType().toString());
    		defCol = defCol+fields[i].getName()+":{"
	    	+"name:\""+fields[i].getName()+"\","
	    	+"type:\""+columnType+"\","
	    	+"label:\"\"}"
	    	;
	    	/*
	    	if(fields[i].getType().toString().indexOf("class")!= -1){
	    		//表示是java的数据类型，否则表示为用户自定义类型
	        	String str = fields[i].getType().toString().substring(fields[i].getType().toString().lastIndexOf(".")+1);
	        	System.out.println("str----------------->"+str);
	        	columns.put(fields[i].getName(), DataType.parse(str));
	    	}
	    	*/
	    	if(i==fields.length - 2){
	    		defCol = defCol+"}";
	    	}else{
	    		defCol = defCol+",";
	    	}
	    	
	    }
	    return defCol;
	}

}
